Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3

Задачи по расчетным механизмам – тема № 8:
Как использовать сторнирование для отмены записей, зарегистрированных в предыдущих периодах

Для изучения этого блока потребуются материалы, изученные ранее:

У механизма вытеснения записей есть одна важная особенность: записи регистра расчета не могут вытеснять записи с периодом регистрации, который меньше периода регистрации текущей записи (даже если данные вводить «задним числом»).

Например, Больничный, который зарегистрирован в марте за февраль, не сможет вытеснить Оклад за февраль, зарегистрированный в феврале:

Конкуренция при вытеснении записей с меньшим периодом регистрации

Рисунок 1 – Конкуренция при вытеснении записей с меньшим периодом регистрации

В данном случае (рис. 1) больничный не может действовать на интервале пересечения с окладом (и, соответственно, вытеснить его), т.к. у оклада период регистрации меньше, чем у больничного.

Для того, чтобы механизм вытеснения мог действовать и в этом случае, используется сторнирование, которое отменяет записи регистра расчета за конкурирующий период и позволяет действовать записям с таким же периодом действия, но более поздним периодом регистрации.

Для того, чтобы программно получить такие записи сторно, используется метод ПолучитьДополнение() объекта РегистрРасчетаНаборЗаписей. Данный метод возвращает таблицу значений, в которой есть все данные для формирования сторно-записей, т.е. записей, по которым существуют конфликты при вытеснении записей с меньшим периодом регистрации.

Например, в случае конкуренции записей регистра расчета по больничному и окладу с разными периодами регистрации за один период действия, состав таблицы может быть следующим:

Таблица значений для формирования сторнирующих записей

Рисунок 2 – Таблица значений для формирования сторнирующих записей

На рис. 2 показан пример, когда конкурирующей записи регистра расчета по больничному листу за период действия 20.02.18 – 23.02.18 не удалось вытеснить запись по окладу, т.к. период регистрации у записи по больничному листу (ПериодРегистрацииСторно) больше, чем у оклада (ПериодРегистрации). Далее на основе этих данных формируются записи сторно, которые позволят действовать записям с большим периодом регистрации, что и будет рассмотрено на примере решения текущей задачи.

Механизм сторнирования используется в некоторых аттестационных задачах, например в 3.5, 3.15, 3.36. Рассмотрим этот механизм более подробно на примере фрагмента из задачи, похожей на аттестационную:

В случае болезни сотрудник получает пособие, размер которого определяется как количество дней болезни, умноженное на среднюю дневную ставку. Средняя дневная ставка рассчитывается как определенный процент от суммы начисленного оклада за предыдущий месяц, поделенный на количество рабочих дней в предыдущем месяце. На период болезни сотрудника начисление по окладу не производится. Следует учесть, что данные по больничному могут вводиться в систему задним числом.

По условию задачи то, что больничные могут вводиться задним числом, означает, что без использования сторнирования механизм вытеснения оклада больничным работать не будет, т.к. период регистрации формируемого набора записей будет больше периода регистрации вытесняемых записей.

Приступим к решению этой задачи и по аналогии с рассмотренным ранее механизмом вытеснения воспользуемся имеющимся в каркасной конфигурации планом видов расчета ОсновныеНачисления. В отличие от задачи по использованию механизма вытеснения, рассмотренной ранее, здесь еще требуется получение базы по окладу для расчета больничного листа.

Поэтому для ПВР ОсновныеНачисления установим переключатель Зависимость от базы в положение Зависит по периоду действия, а в качестве базового плана видов расчета укажем самого себя:

Настройка получения базы для ПВР

Рисунок 3 – Настройка получения базы для ПВР

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии закрыты